公开了一种更新共享存储器的方法和系统,其用于更新共享存储器或其它存储位置,其中多个实体依靠储存到同一存储器的代码来支持一个或多个操作功能。共享存储器可被更新,以便在当前被写入共享存储器的代码的替换之前,用来替换当前储存的代码的代码可被依靠。
1.一种用新通信代码更新当前写入共享存储块的通信代码的方法,所述方法用于电池监测系统(BMS),该电池监测系统具有可操作来测量交通工具电池的电流的应用和可操作来启动由所述应用利用的驱动器的加载器,所述加载器和所述应用都根据被写入所述共享存储块的通信代码实现与交通工具总线的通信,所述方法包括:将所述新通信代码写入具有用于操作所述应用的应用代码的应用存储块,在所述新通信代码正在被写入所述应用存储块时,所述应用是不可操作的;在所述新通信代码正在被写入所述应用存储块时,基于先前被写入所述共享存储块的通信代码执行通信;将所述新通信代码从所述应用存储块复制到所述共享存储块,在所述新通信代码正在被写入所述共享存储块时,由写入所述共享存储块的通信代码支持的与所述交通工具总线的通信是不可操作的;在所述新通信代码被复制到所述共享存储块时,基于写入所述应用存储块的所述新通信代码执行与所述交通工具总线的通信,并且此后,基于写入所述共享存储块的所述新通信代码执行与所述交通工具总线的额外的通信;在完成所述新通信代码到所述共享存储块的复制之后,将应用代码重新写入用所述新通信代码改写了的所述应用存储块,在所述应用代码被完全地重新写入所述应用存储块之后,所述应用变得可操作;在将所述新通信代码复制到所述共享存储块之前,使用校验和操作查验被写入所述应用存储块的所述新通信代码;响应于所述校验和操作未能查验所述新通信代码,阻止所述新通信代码复制到所述共享存储块;以及响应于所述校验和操作未能查验所述新通信代码,重新执行写入所述新通信代码。
2.如权利要求1所述的方法,还包括当将所述应用代码写入所述应用存储块时,改写所述新通信代码。
3.如权利要求1所述的方法,还包括通过基于当前被写入所述共享存储块的所述通信代码执行的通信来接收将被写入所述应用存储块的所述新通信代码。
4.如权利要求1所述的方法,还包括在将所述新通信代码复制到所述共享存储块之前,验证被分配给所述新通信代码的版本号是被分配给当前写入的通信代码的版本号的授权更新。
5.如权利要求1所述的方法,还包括在所述新通信代码从所述应用存储块复制到所述共享存储块时,定期发布指示待决状态的命令。
6.一种用于电池监测系统(BMS)的装置,该电池监测系统具有可操作来测量交通工具电池的电流的应用和可操作来启动由所述应用利用的驱动器的加载器,所述加载器和所述应用都根据被写入所述装置的共享存储块的通信代码实现与交通工具总线的通信,以用新通信代码更新当前写入所述共享存储块的通信代码,所述装置包括:配置为将所述新通信代码写入具有用于操作所述应用的应用代码的应用存储块的模块,在所述新通信代码正在被写入所述应用存储块时,所述应用是不可操作的;配置为在所述新通信代码正在被写入所述应用存储块时,基于先前被写入所述共享存储块的通信代码执行通信的模块;配置为将所述新通信代码从所述应用存储块复制到所述共享存储块的模块,在所述新通信代码正在被写入所述共享存储块时,由写入所述共享存储块的通信代码支持的与所述交通工具总线的通信是不可操作的;配置为在所述新通信代码被复制到所述共享存储块时,基于写入所述应用存储块的所述新通信代码执行与所述交通工具总线的通信,并且此后,基于写入所述共享存储块的所述新通信代码执行与所述交通工具总线的额外的通信的模块;配置为在完成所述新通信代码到所述共享存储块的复制之后,将应用代码重新写入用所述新通信代码改写了的所述应用存储块的模块,在所述应用代码被完全地重新写入所述应用存储块之后,所述应用变得可操作;配置为在将所述新通信代码复制到所述共享存储块之前,使用校验和操作查验被写入所述应用存储块的所述新通信代码的模块;配置为响应于所述校验和操作未能查验所述新通信代码,阻止所述新通信代码复制到所述共享存储块的模块;以及配置为响应于所述校验和操作未能查验所述新通信代码,重新执行写入所述新通信代码的模块。
7.如权利要求6所述的装置,还包括配置为当将所述应用代码写入所述应用存储块时改写所述新通信代码的模块。
8.如权利要求6所述的装置,还包括配置为通过基于当前被写入所述共享存储块的所述通信代码执行的通信来接收将被写入所述应用存储块的所述新通信代码的模块。
9.如权利要求6所述的装置,还包括配置为在将所述新通信代码复制到所述共享存储块之前,验证被分配给所述新通信代码的版本号是被分配给当前写入的通信代码的版本号的授权更新的模块。
10.如权利要求6所述的装置,还包括配置为在所述新通信代码从所述应用存储块复制到所述共享存储块时,定期发布指示待决状态的命令的模块。
11.一种更新共享存储块的方法,所述共享存储块用于在固定的存储位置储存共享代码以支持第一程序和第二程序的通信,所述方法包括:将新共享代码写入分配给所述第一程序和第二程序的一个的暂存存储块,在所述新共享代码被储存在所述暂存存储块时,所述第一程序和所述第二程序的一个变得不可操作;将所述新共享代码从所述暂存存储块复制到所述共享存储块;在所述新共享代码被复制到所述共享存储块时,根据储存在所述暂存存储块的所述新共享代码执行共享函数;如果储存在所述暂存存储块的所述新共享代码的校验和未能匹配一校验和值,则阻止所述新共享代码复制到所述共享存储块;以及如果储存在所述暂存存储块的所述新共享代码的所述校验和未能匹配所述校验和值,则重新执行将所述新共享代码写入所述暂存存储块。
12.如权利要求11所述的方法,还包括:在所述新共享代码被复制到所述共享存储块时执行所述共享函数的至少一部分包括将指示待决状态的消息定期传输到客户端。
13.如权利要求11所述的方法,还包括在所述新共享代码到所述共享存储器的复制完成之后,用与变得不可操作的所述第一程序和所述第二程序中的所述一个相关的代码改写储存在所述暂存存储块的所述新共享代码,此后,所述第一程序和所述第二程序中的所述一个变得可操作。相关中请的交叉引用本申请涉及于2010年6月9日提交的题为“Sharedxa0Memoryxa0Architecture”的同时提交并共同拥有的第12/796,833号美国申请,其公开通过引用被全部并入本文。
技术领域本发明涉及更新共享存储器的方法和系统,例如但不限于更新用在交通工具系统控制器内的类型的共享存储器。背景在共享架构中,例如,如果需要新版本的代码来支持协议变化、修复操作错误等,可能需要更新或以其它方式置换写入共享存储块的代码,同时使用共享存储块中的软件功能。发明概述在本发明的一个方面,提供了一种用新通信代码更新当前写入的通信代码的方法,所述方法用于电池监测系统(BMS),该电池监测系统具有可操作来测量交通工具电池的电流的应用和可操作来启动由所述应用利用的驱动器的加载器,所述加载器和所述应用都根据被写入共享存储块的通信代码实现通信功能,所述方法包括:将所述新通信代码写入具有用于操作所述应用的应用代码的应用存储块,在所述新通信代码被写入所述应用存储块时,所述应用是不可操作的;在所述新通信代码被写入所述应用存储块时,基于先前被写入所述共享存储块的通信代码执行通信;将所述新通信代码从所述应用存储块复制到所述共享存储块,在所述新通信代码被写入所述共享存储块时,由写入所述共享存储块的代码支持的通信是不可操作的;在所述新通信代码被复制到所述共享存储块时,基于写入所述应用存储块的所述新通信代码执行通信,并且此后,基于写入所述共享存储块的所述新通信代码执行额外的通信;以及在完成所述新通信代码到所述共享存储块的复制之后,将应用代码写入所述应用存储块,在所述应用代码被完全地写入所述应用存储块之后,所述应用可操作。该方法还可包括当将应用代码写入应用存储块时,改写新通信代码。该方法还可包括通过基于当前被写入应用存储块的通信代码执行的通信来接收将被写入应用存储块的新通信代码。该方法还可包括在将新通信代码复制到共享存储块之前,使用校验和操作查验被写入应用存储块的新通信代码。该方法还可包括在将新通信代码复制到共享存储块之前,验证被分配给新通信代码的版本号是被分配给当前写入的通信代码的版本号的授权更新。该方法还可包括在新通信代码从应用存储块复制到共享存储块时,定期发布指示待决状态的命令。在本发明的另一个方面,提供了一种控制器,包括:中央处理单元(CPU),其可操作来根据从下列部件读取的指令执行代码以启动所述控制器的操作:(i)加载器存储块,其具有被储存以便于加载器的操作的代码;(ii)应用存储块,其具有被储存以便于应用的操作的代码;以及(iii)共享存储块,其具有由所述加载器和所述应用的每个共享的通信代码。共享存储块可储存加载器和应用的每个所需要的代码以启动数据通过交通工具网络进行交换的类型的通信,主设备和交通工具控制器的至少一个连接到交通工具网络。加载器可操作来执行自举引导器,自举引导器实现共享存储块的更新而无需禁止通信。自举引导器可操作来便于使用第二代码集更新储存到共享存储块的第一代码集,并可操作来在第二代码集被复制到共享存储块之前,将第二代码集写入应用存储块的暂存部分。自举引导器还可操作来在第二代码集从应用存储块复制到加载器存储块的共享部分时根据储存在应用存储块的第二代码集执行通信。在第二代码集被复制到共享部分时被执行的通信的至少一部分可包括将指示待决状态的消息定期传输到主设备。一旦第二代码集开始被写入应用存储块,应用就变得不可操作。自举引导器还可操作来在第二代码集到加载器存储块的共享部分的复制完成之后用与应用相关的代码改写储存到应用存储块的第二代码集。自举引导器还可操作来在第二代码集的校验和未能匹配一校验和值的情况下阻止第二代码集复制到共享存储块。共享存储块可被储存到加载器存储块的固定位置。在本发明的又一个方面,提供了一种更新共享存储块的方法,所述共享存储块用于在固定的存储位置储存共享代码以支持第一程序和第二程序的通信,所述方法包括:将新共享代码写入分配给所述第一程序和第二程序的一个的暂存存储块,在所述新共享代码被储存在暂存存储块时,所述第一程序和所述第二程序的一个变得不可操作;将所述新共享代码从所述暂存存储块复制到所述共享存储块;以及在所述新共享代码被复制到所述共享存储块时,根据储存在所述暂存存储块的所述新共享代码执行共享函数。该方法还可包括:在新共享代码被复制到共享存储块时执行共享函数的至少一部分包括将指示待决状态的消息定期传输到客户端。该方法还可包括如果储存在暂存存储块的新共享代码的校验和未能匹配一校验和值,则阻止新共享代码复制到共享存储块。该方法还可包括在新共享代码到共享存储器的复制完成之后,用与变得不可操作的第一程序和第二程序中的一个相关的代码改写储存在暂存存储块的新共享代码,此后,第一程序和第二程序中的一个变得可操作。附图的简要说明在所附的权利要求中指出本发明的特征。然而,通过结合附图参考下面的详细描述,本发明的其它特征将变得更加明显并且本发明将被最好地理解,在附图中:图1示出根据本发明的一个非限制性方面的交通工具控制器系统;以及图2示出根据本发明的一个非限制性方面的用于更新共享存储块的方法的流程图。详述图1示出根据本发明的一个非限制性方面的交通工具控制系统10。交通工具控制系统10可被包括在交通工具(未示出)内,交通工具具有由一个或多个交通工具子系统控制器12、14、16控制的若干交通工具子系统(未示出),例如但不限于交通工具信息娱乐(infortainment)、安全(被动进入、远程无钥进入等)、照明、供暖和空调以及发动机控制子系统。根据由主控制器20发布的指令使用通过交通工具总线18传送的通信可指导交通工具子系统的操作、更新、交互作用和控制。虽然此交通工具系统10被提出,但是它仅为了示例性目的被提出并且展现本发明可以适用的许多环境的一种。本发明充分设想其对其他非交通工具环境的应用。所示的基于交通工具的环境代表一种环境,在此环境中可能有必要定期更新具有共享存储块24的存储器22。交通工具环境也代表一种环境,在此环境中可能需要控制器12、14、16与其它控制器12、14、16通过通信总线18和/或无线地操作和/或通信。在示例性图示中,控制器16被标记为电池监测系统(BMS)控制器16。BMS控制器16被配置成与BMS的硬件(未示出)合作来操作,该BMS可操作来例如测量电流、电池温度并执行与交通工具电池有关的任何数量的其它操作。题为“Batteryxa0Monitoringxa0System”的第12/486,847号美国专利申请描述了一个这样的BMS,该申请的公开由此通过引用被全部并入。除了共享存储块24以外,BMS控制器16的存储器22被示为还包括加载器(launcher)存储块28和应用存储块30。虽然没有示出,存储器22可包括可与可以是易失或非易失型存储器的加载器、应用和共享存储块24、28、30合作来操作的非易失性存储器,例如但不限于RAM。应用存储块28、30储存与应用相关的代码(或数据)。应用可以操作来执行与BMS相关的各种函数,例如以便于测量电流并向一个或多个其它控制器报告电流(主设备也被认为是控制器)。加载器存储块28储存与加载器相关的代码。加载器可被配置成便于BMS的启动和/或初始化,例如但不限于装入驱动器32和/或以其它方式便于所需要的操作,以便应用执行其期望的操作。BMS控制器16被示为包括中央处理单元(CPU)34。CPUxa034可被配置成根据从存储器22读取的指令执行操作,例如以便于与加载器和应用相关的操作。CPUxa034也可以被配置成便于将代码写入存储器22,例如以支持下文更详细描述的一些操作。CPUxa034被示为与用于与BMS的硬件部件交互作用的驱动器32交互作用,包括支持通过交通工具总线18与其它控制器12、14通信所需的硬件部件。根据储存在共享存储块24中的通信代码可指导和/或执行BMS控制器16和一个或多个其它控制器12、14之间进行的通信。通信代码可以被储存在共享存储块24中,并且当执行通信相关的操作时由加载器和应用使用(可选地,共享存储器24可由在BMS控制器16上操作的其它应用和/或特征使用)。如果支持通信所需要的通信代码量相当大,则共享存储器24的使用可能是有益的。与储存加载器和应用的每个的单独的通信代码集相反,共享通信代码的能力可以减少支持加载器、应用及(如果有的话)其它通信相关元件所需要的通信代码的总量。图2示出根据本发明的一个非限制性方面的用于更新共享存储块的方法的流程图50。该方法在不丢失由共享存储块所支持的操作的情况下和/或在新的代码被写入共享存储块之前通过根据新的代码启动操作来促进共享存储块的更新中是有利的。在共享存储块24被用来储存加载器和应用支持通信所需要的通信代码的上述情况下,本发明的至少一个非限制性方面设想的方法将允许共享存储块24被更新,而不会失去通信能力。本发明所设想的方法不一定限于基于交通工具的控制器或者上述的BMS控制器16,然而,为了示例性非限制性的目的,关于图1的图示提供了先前的描述。块52涉及重置事件类型,其中BMS控制器16被重新启动或另外需要以一种方式初始化,在该方式中需要加载器来装入驱动器、识别端口和/或在启动应用的操作之前执行任何其它功能(加载器的功能在这方面当然可以根据控制器和/或应用的使用以及硬件和/或与其相关的功能而变化)。块54涉及CPU根据从加载器存储块读取的代码执行加载器的操作。块56涉及评估共享代码,即,被写入共享存储块的通信代码的存在。如果共享代码被检测到,则在块58中关于应用代码(代码)是否适当地储存在应用存储器中或适当的升级关键字是否已被设置进行评估。当与应用相关的所有代码被写入应用存储块30使得应用是完全操作的时和/或当关键字已被适当地更新以指示的所储存的代码的可接受的使用时,即,如果代码以前没有被破坏,则可接受它被再次使用时,应用代码可被认为适当地储存。适当储存的应用可以然后在块62中被执行。块64评估命令是否例如从主控制器20被接收到,以擦除、升级或以其它方式更改存储器,例如以更新储存到共享存储块22的通信代码。如果没有收到这样的命令,则应用继续执行。如果更新代码的命令被收到,则在块66中存储器的应用存储块自毁或被指定为不可与关键字集的升级一起使用。自毁使应用变得不可操作,以便在应用可以再次变得可操作之前,应用代码必须被重新写入应用存储块30。关键字集升级简单地更改与代码相关的标记,使得代码可随后被使用而不必被重新装入,假设在此之前代码没有被改写。块68实现重置或返回到块52。再次到达块56并再次关于共享代码是否被适当地储存到共享存储块22进行评估。假设某个其它错误没有破坏共享代码,共享代码应该被适当地储存,并且在块58中再次对应用代码进行评估。由于自毁,应用代码将被不适当地储存,并且自举引导器将在块74中被执行。可选地,自举引导器可变成不自毁代码而例如使用存取码的设置的操作或其它权限许可操作。例如,自举引导器可通过与被授权的主设备的通信来确认更新共享代码。自举引导器可以是根据储存在加载器存储块28中的相关代码实现的操作或事件系列。如果在块64中记录的命令由期望更新共享存储块22的通信代码的主控制器20发送,则在块76中自举引导器开始接收待装入的新通信代码以代替旧通信代码。块78需要新通信代码被替代地储存到应用存储块,而不是将新通信代码直接储存到共享存储块22。新通信代码可被储存到暂存存储位置或应用存储块30的块。可选地,支持新通信代码从暂存存储块30到共享存储块24的复制的代码可与正被下载的代码包括在一起。暂存存储块可对应于块66中破坏的应用存储块30的相应部分。可选地,在大小上对应于暂存块的应用存储块30的一部分可能被破坏,而不是破坏整个应用存储块。这种类型的部分破坏可能限制将应用代码重新装到应用存储块30所花费的时间,因为重新装入的部分可以被限于与暂存存储块对应的那些部分。块80确定是否仍从主控制器20和/或连接到交通工具总线18或以其它方式与BMS控制器通信的其它控制器接收新通信代码。一旦所有的新通信代码被接收到,块82就评估储存在暂存存储块中的新通信代码是否有效。新通信代码的有效性可以例如通过校验和操作来确定,其中新通信代码的校验和值与期望的校验和值比较,并且如果值匹配,则被宣布是有效的。这项评估可以基于新通信代码的版本号,即,共享代码只可在版本号大于当前版本号的条件下被改写。可选地,评估可包括比较口令或源标记,以确保改写现有共享存储代码的代码由负责将现有通信代码写入共享存储块22的一方授权。如果代码无效,则块84宣布代码被拒绝,并且该过程重复。如果代码有效,则到达块88并且关于新代码是否应被复制到共享存储块22进行评估。如果新代码被授权写入共享存储块22,则在块90中“待决”或等待命令被传递到主控制器20和/或其它控制器。“待决”消息指示BMS控制器16不能处理请求,直到新通信代码被复制到共享存储块22。新代码到共享存储块22的复制在块92中被执行,并对应于来自暂存存储块的代码在当前储存在共享存储块22中的代码之上的复制。因为共享存储代码在复制操作过程中被写入,所以由共享存储块22支持的通信或其它操作在复制操作过程中是不可操作的。因此,根据储存在暂存存储块中的通信代码发布“待决”命令。在复制完成之前,“待决”消息可按有规律的间隔被发布和/或消息可指定预期的一段时间。一旦复制操作完成,通信相关的操作的控制就在块94中恢复到储存在共享存储块22的代码,并且在块96中应用代码被写回应用存储块。可选地,在完成共享代码的复制后,“准备好了”消息可被传输到主控制器。主控制器可以提供应用代码,其可以是相同的或新的应用代码,并且可选地,仅仅对应于暂存存储块的应用代码的部分置换。在块100中重置被实现之前,块98监测应用代码是否仍被接收和/或写入应用存储块。块56再次评估共享存储代码是否适当地储存在共享存储块中。在块92的复制之后,关于最新写入的通信代码进行这种评估。如果错误发生并且新代码被不适当地写入共享存储块22或某个其它事件引起重置,则在块102中关于新通信代码是否适当地被储存在暂存存储块中进行评估。如果重置发生在块96中写入应用数据之前,则新通信代码可被适当地储存在暂存存储块中,并且将通信代码从暂存存储块复制到共享存储块的另一尝试可能发生在块104中。如果暂存存储块不包括共享代码的正确复本,即,由于某个其它原因或在块96之后发生错误,则可在块106中实现跛行(limp-home)操作。跛行操作可能是交通工具环境所特有的,其中某个级别的默认功能自动地实现,以确保某个级别的持续的交通工具操作。正如上面所支持的,本发明的一个非限制性方面涉及使用共享存储器减小ECU设备所需的总的非易失性存储器尺寸、提供更新通信代码的可能性而不使编程策略复杂化或增加编程时间、并确保适当的通信软件升级(仅新版本和仅经查验的版本)。本发明的一个非限制性方面提供在通信信道上对ECU编程的能力。这意味着,通信SW也必须在自举引导器中实现。如所要求的,本发明的详细实施方式在本文被公开,然而,应当理解,所公开的实施方式只是可以被体现在不同的和可选的形式中的本发明的示例。附图不一定按比例绘制,一些特征可以被放大或被最小化,以示出特定部件的细节。因此,本文所公开的具体结构和功能细节不应被解释为限制性的,而只是作为对权利要求的代表性基础和/或作为对教导本领域的技术人员不同地采用本发明的代表性基础。各种实现实施方式的特征可以被组合以形成本发明的另外的实施方式。虽然上面描述了示例性实施方式,但是意图不是这些实施方式描述了本发明的所有可能的形式。相反,在说明书中使用的词汇是描述性的词汇,而非限制性的词汇,并且应当理解,可以进行各种变化而不偏离本发明的精神和范围。此外,各种实现实施方式的特征可以被组合以形成本发明的另外的实施方式。